<ResourceDictionary 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Shared.xaml" />
  </ResourceDictionary.MergedDictionaries>

  <!-- SimpleStyles: Menu -->

  <Style x:Key="{x:Type Menu}" TargetType="{x:Type Menu}">
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Menu}">
          <Border 
            Background="{StaticResource LightBrush}"
            BorderBrush="{StaticResource NormalBorderBrush}"
            BorderThickness="1">
            <StackPanel ClipToBounds="True" Orientation="Horizontal" IsItemsHost="True"/>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
    
  <!-- SimpleStyles: ContextMenu -->

    <Style TargetType="{x:Type ContextMenu}">
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Grid.IsSharedSizeScope" Value="true"/>
    <Setter Property="HasDropShadow" Value="True"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ContextMenu}">
          <Border 
            Name="Border"
            Background="{StaticResource WindowBackgroundBrush}"
            BorderBrush="{StaticResource SolidBorderBrush}"
            BorderThickness="1" >
            <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle"/>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="HasDropShadow" Value="true">
              <Setter TargetName="Border" Property="Padding" Value="0,3,0,3"/>
              <Setter TargetName="Border" Property="CornerRadius" Value="4"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>


    <MenuScrollingVisibilityConverter x:Key="MenuScrollingVisibilityConverter"/>
  <Geometry x:Key="DownArrow"> M 0,0 L 3.5,4 L 7,0 Z</Geometry>
  <Geometry x:Key="UpArrow">   M 0,4 L 3.5,0 L 7,4 Z</Geometry>
  <Geometry x:Key="RightArrow">M 0,0 L 4,3.5 L 0,7 Z</Geometry>

  <Style x:Key="MenuScrollButton"
       TargetType="{x:Type RepeatButton}"
       BasedOn="{x:Null}">
    <Setter Property="ClickMode"
            Value="Hover"/>
    <Setter Property="MinWidth"
            Value="0"/>
    <Setter Property="MinHeight"
            Value="0"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type RepeatButton}">
          <DockPanel Background="Transparent"
                     SnapsToDevicePixels="true">
            <!--right -->
            <Rectangle DockPanel.Dock="Right"
                       x:Name="R1"
                       Width="1"
                       Fill="Transparent"/>
            <!--bottom-->
            <Rectangle DockPanel.Dock="Bottom"
                       x:Name="B1"
                       Height="1"
                       Fill="Transparent"/>
            <!--left  -->
            <Rectangle DockPanel.Dock="Left"
                       x:Name="L1"
                       Width="1"
                       Fill="Transparent"/>
            <!--top   -->
            <Rectangle DockPanel.Dock="Top"
                       x:Name="T1"
                       Height="1"
                       Fill="Transparent"/>
            <ContentPresenter x:Name="ContentContainer"
                              Margin="2,2,2,2"
                              VerticalAlignment="Center"
                              HorizontalAlignment="Center"/>
          </DockPanel>
          <ControlTemplate.Triggers>
            <Trigger Property="IsPressed"
                     Value="true">
              <Setter TargetName="R1"
                      Property="Fill"
                      Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
              <Setter TargetName="B1"
                      Property="Fill"
                      Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
              <Setter TargetName="L1"
                      Property="Fill"
                      Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
              <Setter TargetName="T1"
                      Property="Fill"
                      Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
              <Setter TargetName="ContentContainer"
                      Property="Margin"
                      Value="3,3,1,1"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>


  <Style x:Key="MenuScrollViewer"
         TargetType="{x:Type ScrollViewer}"
         BasedOn="{x:Null}">
    <Setter Property="HorizontalScrollBarVisibility"
            Value="Hidden"/>
    <Setter Property="VerticalScrollBarVisibility"
            Value="Auto"/>
    <Setter Property="Template">
      <Setter.Value>
        <!--ScrollViewer for a MenuItem-->
        <ControlTemplate TargetType="{x:Type ScrollViewer}">
          <Grid SnapsToDevicePixels="True">
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
              <RowDefinition Height="*"/>
              <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Border Grid.Row="1"
                    Grid.Column="0">
              <ScrollContentPresenter Margin="{TemplateBinding Padding}"/>
            </Border>
            <RepeatButton
                          Style="{StaticResource MenuScrollButton}"
                          Grid.Row="0"
                          Grid.Column="0"
                          Command="{x:Static ScrollBar.LineUpCommand}"
                          CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                          Focusable="False">
              <RepeatButton.Visibility>
                <MultiBinding FallbackValue="Visibility.Collapsed"
                              Converter="{StaticResource MenuScrollingVisibilityConverter}"
                              ConverterParameter="0">
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ComputedVerticalScrollBarVisibility"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="VerticalOffset"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ExtentHeight"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ViewportHeight"/>
                </MultiBinding>
              </RepeatButton.Visibility>
              <Path Fill="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"
                    Data="{StaticResource UpArrow}"/>
            </RepeatButton>
            <RepeatButton
                          Style="{StaticResource MenuScrollButton}"
                          Grid.Row="2"
                          Grid.Column="0"
                          Command="{x:Static ScrollBar.LineDownCommand}"
                          CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                          Focusable="False">
              <RepeatButton.Visibility>
                <MultiBinding FallbackValue="Visibility.Collapsed"
                              Converter="{StaticResource MenuScrollingVisibilityConverter}"
                              ConverterParameter="100">
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ComputedVerticalScrollBarVisibility"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="VerticalOffset"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ExtentHeight"/>
                  <Binding RelativeSource="{RelativeSource TemplatedParent}"
                           Path="ViewportHeight"/>
                </MultiBinding>
              </RepeatButton.Visibility>
              <Path Fill="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"
                    Data="{StaticResource DownArrow}"/>
            </RepeatButton>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>

  <!-- SimpleStyles: MenuItem -->
    <Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="{x:Type Separator}">
    <Setter Property="Height" Value="1"/>
    <Setter Property="Margin" Value="0,4,0,4"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Separator}">
          <Border BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1"/>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>

    <!-- TopLevelHeader -->
  <ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="{x:Type MenuItem}">
    <Border Name="Border" >
      <Grid>
        <ContentPresenter 
          Margin="6,3,6,3" 
          ContentSource="Header"
          RecognizesAccessKey="True" />
        <Popup 
          Name="Popup"
          Placement="Bottom"
          IsOpen="{TemplateBinding IsSubmenuOpen}"
          AllowsTransparency="True" 
          Focusable="False"
          PopupAnimation="Fade">
          <Border 
            Name="SubmenuBorder"
            SnapsToDevicePixels="True"
            Background="{StaticResource WindowBackgroundBrush}"
            BorderBrush="{StaticResource SolidBorderBrush}"
            BorderThickness="1" >
            <ScrollViewer CanContentScroll="True" 
              Style="{StaticResource MenuScrollViewer}">
              <StackPanel   
              IsItemsHost="True" 
              KeyboardNavigation.DirectionalNavigation="Cycle" />
            </ScrollViewer>
          </Border>
        </Popup>
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="IsSuspendingPopupAnimation" Value="true">
        <Setter TargetName="Popup" Property="PopupAnimation" Value="None"/>
      </Trigger>
      <Trigger Property="IsHighlighted" Value="true">
        <Setter TargetName="Border" Property="Background" Value="{StaticResource NormalBrush}"/>
        <Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/>
      </Trigger>
<!--Snippettoplevelheader-->        
      <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True">
        <Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="0,0,4,4"/>
        <Setter TargetName="SubmenuBorder" Property="Padding" Value="0,0,0,3"/>
      </Trigger>
<!--/Snippettoplevelheader-->
        <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>
  <!-- TopLevelItem -->

  <ControlTemplate 
    x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" 
    TargetType="{x:Type MenuItem}">
    <Border Name="Border" >
      <Grid>
        <ContentPresenter 
          Margin="6,3,6,3" 
          ContentSource="Header"
          RecognizesAccessKey="True" />
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="IsHighlighted" Value="true">
        <Setter TargetName="Border" Property="Background" Value="{StaticResource NormalBrush}"/>
        <Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/>
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>

  <!-- SubmenuItem -->

  <ControlTemplate 
    x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" 
    TargetType="{x:Type MenuItem}">
    <Border Name="Border" >
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto" SharedSizeGroup="Icon"/>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="Auto" SharedSizeGroup="Shortcut"/>
          <ColumnDefinition Width="13"/>
        </Grid.ColumnDefinitions>
        <ContentPresenter 
          Name="Icon"
          Margin="6,0,6,0"
          VerticalAlignment="Center"
          ContentSource="Icon"/>
        <Border 
          Name="Check"  
          Width="13" Height="13" 
          Visibility="Collapsed"
          Margin="6,0,6,0" 
          Background="{StaticResource NormalBrush}"
          BorderThickness="1"
          BorderBrush="{StaticResource NormalBorderBrush}">
          <Path 
            Name="CheckMark"
            Width="7" Height="7" 
            Visibility="Hidden" 
            SnapsToDevicePixels="False" 
            Stroke="{StaticResource GlyphBrush}"
            StrokeThickness="2"
            Data="M 0 0 L 7 7 M 0 7 L 7 0" />
        </Border>
        <ContentPresenter 
          Name="HeaderHost"
          Grid.Column="1"
          ContentSource="Header"
          RecognizesAccessKey="True"/>
        <TextBlock x:Name="InputGestureText"
          Grid.Column="2"
          Text="{TemplateBinding InputGestureText}"
          Margin="5,2,0,2"
          DockPanel.Dock="Right" />
      </Grid>
    </Border>
    <ControlTemplate.Triggers>
      <Trigger Property="Icon" Value="{x:Null}">
        <Setter TargetName="Icon" Property="Visibility" Value="Hidden"/>
      </Trigger>
      <Trigger Property="IsChecked" Value="true">
        <Setter TargetName="CheckMark" Property="Visibility" Value="Visible"/>
      </Trigger>
      <Trigger Property="IsCheckable" Value="true">
        <Setter TargetName="Check" Property="Visibility" Value="Visible"/>
        <Setter TargetName="Icon" Property="Visibility" Value="Hidden"/>
      </Trigger>
      <Trigger Property="IsHighlighted" Value="true">
        <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>
      </Trigger>
      <Trigger Property="IsEnabled" Value="false">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>

  <!-- SubmenuHeader -->

  <ControlTemplate 
    x:Key="{x:Static MenuItem.SubmenuHeaderTemplateKey}" 
    TargetType="{x:Type MenuItem}">
    <Border Name="Border" >
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto" SharedSizeGroup="Icon"/>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="Auto" SharedSizeGroup="Shortcut"/>
          <ColumnDefinition Width="13"/>
        </Grid.ColumnDefinitions>
        <ContentPresenter 
          Name="Icon"
          Margin="6,0,6,0"
          VerticalAlignment="Center"
          ContentSource="Icon"/>
        <ContentPresenter 
          Name="HeaderHost"
          Grid.Column="1"
          ContentSource="Header"
          RecognizesAccessKey="True"/>
        <TextBlock x:Name="InputGestureText"
          Grid.Column="2"
          Text="{TemplateBinding InputGestureText}"
          Margin="5,2,2,2"
          DockPanel.Dock="Right"/>
        <Path 
          Grid.Column="3"
          HorizontalAlignment="Center"
          VerticalAlignment="Center"
          Data="M 0 0 L 0 7 L 4 3.5 Z" 
          Fill="{StaticResource GlyphBrush}" />
        <Popup 
          Name="Popup"
          Placement="Right"
          HorizontalOffset="-4" 
          IsOpen="{TemplateBinding IsSubmenuOpen}"
          AllowsTransparency="True" 
          Focusable="False"
          PopupAnimation="Fade">
          <Border 
            Name="SubmenuBorder"
            SnapsToDevicePixels="True"
            Background="{StaticResource WindowBackgroundBrush}"
            BorderBrush="{StaticResource SolidBorderBrush}"
            BorderThickness="1" >
            <ScrollViewer CanContentScroll="True"
              Style="{StaticResource MenuScrollViewer}">
              <StackPanel  
              IsItemsHost="True" 
              KeyboardNavigation.DirectionalNavigation="Cycle" />
            </ScrollViewer>
          </Border>
        </Popup>
      </Grid>
    </Border>
      
    <ControlTemplate.Triggers>
      <Trigger Property="Icon" Value="{x:Null}">
        <Setter TargetName="Icon" Property="Visibility" Value="Collapsed"/>
      </Trigger>
      <Trigger Property="IsHighlighted" Value="true">
        <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>
      </Trigger>
                <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True">
        <Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="4"/>
        <Setter TargetName="SubmenuBorder" Property="Padding" Value="0,3,0,3"/>
      </Trigger>
      <Trigger Property="IsEnabled" Value="false">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
      </Trigger>
    </ControlTemplate.Triggers>
  </ControlTemplate>

  <!-- MenuItem Style -->

  <Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}">
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Style.Triggers>
      <Trigger Property="Role" Value="TopLevelHeader">
        <Setter Property="Template" Value="{StaticResource {x:Static MenuItem.TopLevelHeaderTemplateKey}}"/>
        <Setter Property="Grid.IsSharedSizeScope" Value="true"/>
      </Trigger>
      <Trigger Property="Role" Value="TopLevelItem">
        <Setter Property="Template" Value="{StaticResource {x:Static MenuItem.TopLevelItemTemplateKey}}"/>
      </Trigger>
      <Trigger Property="Role" Value="SubmenuHeader">
        <Setter Property="Template" Value="{StaticResource {x:Static MenuItem.SubmenuHeaderTemplateKey}}"/>
      </Trigger>
      <Trigger Property="Role" Value="SubmenuItem">
        <Setter Property="Template" Value="{StaticResource {x:Static MenuItem.SubmenuItemTemplateKey}}"/>
      </Trigger>
    </Style.Triggers>
  </Style>

</ResourceDictionary>